package com.itheima.api.calendar.demo02;

import java.util.Calendar;
import java.util.Date;

public class CalendarDemo01 {

    public static void main(String[] args) {

        /**
         * Calendar类是一个抽象类，那么我们不能直接通过new关键字来创建对象，那么我们应该如何获取到了该类的对象呢？
         * public static Calendar getInstance​()
         */
        Calendar calendar = Calendar.getInstance() ;            // 这个对象所代表的时间就是当前系统时间
//        System.out.println(calendar);

        /**
         * java.util.GregorianCalendar[time=1566953557593,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=7,WEEK_OF_YEAR=35,WEEK_OF_MONTH=5,DAY_OF_MONTH=28,DAY_OF_YEAR=240,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=8,HOUR_OF_DAY=8,MINUTE=52,SECOND=37,MILLISECOND=593,ZONE_OFFSET=28800000,DST_OFFSET=0]
         */

        /**
         * public int get(int field)						返回给定日历字段的值
         * public void add(int field, int amount)			根据日历的规则，将指定的日历字段添加或减去给定时间常量
         * public void set(int year,int month,int date)	设置当前日历的年月日
         * public void set(int field,int value)			    设置指定字段的值
         * public void setTime(Date date)					将Date对象转换为Calendar对象public Date getTime()将Calendar对象转换为Date对象
         */

        // public int get(int field)						返回给定日历字段的值
        /**
         * get方法需要一个参数，这个参数表示的是指定的日历字段所对应的int类型的值。 问题？我怎么就能知道指定的日历字段所对应的int类型的值到底是多少呢？
         * year 在Calendar类中其实给我们提供了很多的静态常量，来表示指定的日历字段所对应的int类型的值
         *
         */
        System.out.println("年：" + calendar.get(Calendar.YEAR));
        System.out.println("月：" + calendar.get(Calendar.MONTH));        // 是从0开始计算月 ， 1月对应的0
        System.out.println("一个月中的第：" + calendar.get(Calendar.DAY_OF_MONTH) + "天");
        System.out.println("一周中的第：" + calendar.get(Calendar.DAY_OF_WEEK) + "天");        // 星期日是第一天


        System.out.println("---------------------------------------------------------");

        // public void add(int field, int amount)			根据日历的规则，将指定的日历字段添加或减去给定时间常量
        Calendar calendar1 = Calendar.getInstance() ;
//        calendar1.add(Calendar.YEAR , 1);
//        calendar1.add(Calendar.DAY_OF_MONTH , -1);
//        System.out.println(calendar1.get(Calendar.DAY_OF_MONTH));

        System.out.println("---------------------------------------------------------");

        // public void set(int year,int month,int date)	设置当前日历的年月日
//        calendar1.set(2019 , 6 , 20);     // 表示的是2019年7月20号
//        System.out.println(calendar1.get(Calendar.MONTH));

        System.out.println("---------------------------------------------------------");

        // public void set(int field,int value)			    设置指定字段的值
//        calendar1.set(Calendar.YEAR , 2018);
//        System.out.println(calendar1.get(Calendar.YEAR));

//        calendar1.set(Calendar.MONTH , 6);                      // 表示的是7月
//        System.out.println(calendar1.get(Calendar.MONTH));

        System.out.println("---------------------------------------------------------");

        // public void setTime(Date date): 将Date对象转换为Calendar对象public Date getTime()将Calendar对象转换为Date对象
        Date date = new Date();
        calendar1.setTime(date);
        System.out.println(calendar1.get(Calendar.YEAR));

    }

}
